package com.cskaoyan.javase.oop.exercise5.game;

/**
 * @description: 僵尸类
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

public class Zombie {
    //定义僵尸类的成员变量
    String name;
    int blood;
    int attackValue;
    //在僵尸的成员变量列表中放一个植物对象
    Plant plant;

    //定义僵尸类的成员方法
    public void attack() {
        System.out.println("我要打植物了！");
    }

    public void eat() {
        System.out.println("我要吃掉你的脑子！");
    }

    public void move() {
        System.out.println("我要接近植物了！");
    }

    //我希望僵尸可以被植物攻击，我想看到僵尸的血量降低
    //对象之间产生交互
    //必须要知道植物的攻击力，就可以计算了

    //如果我直接把植物的攻击力作为参数传入，可以吗？
    //这种方式也是可以实现功能，但是我们一般不这么做
    //这两个对象产生交互，往往不是一次，一个方法
    //比如某些植物攻击后 减速僵尸 寒冰射手
    //所以干脆直接传入一个对象，方便交互
    public void beAttacked() {
        System.out.println("我被植物攻击了！我每次受到" + plant.attackValue + "点伤害，我还剩下" + (this.blood - this.plant.attackValue) + "点血量！");
    }

    public Zombie() {
    }

    public Zombie(String name, int blood, int attackValue) {
        this.name = name;
        this.blood = blood;
        this.attackValue = attackValue;
    }
}
